package br.com.bestOffer.ejb.fabricante.entity;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import br.com.bestOffer.ejb.produto.entity.Produto;

@Entity
@Table(name="TB04_FABRICANTE")
@NamedQueries({
	@NamedQuery(name="Fabricante.listarTodosFabricados", query="Select f from Fabricante f ORDER BY  f.nomeFabricante ASC "),
	@NamedQuery(name="Fabricante.buscarFabricantePorNome", query="Select f from Fabricante f where f.nomeFabricante = :nome "),
	@NamedQuery(name="Fabricante.listarFabricantePorId", query="Select f from Fabricante f where f.id = :idFabricante "),
	@NamedQuery(name="Fabricante.buscarFabricanteProdutos", query="Select f from Fabricante f join fetch f.listaProdutos lp where f.id = :idFabricante "),
})
public class Fabricante implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -2145524646618231996L;
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name="Id_fabricante",nullable=false)
	private Integer id;
	
	@Column(name="nome",nullable=false,unique=true,length=20)
	private String nomeFabricante;
	
	@OneToMany(fetch= FetchType.LAZY, cascade = CascadeType.ALL , mappedBy = "fabricante")
	private List<Produto> listaProdutos;
	

	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getNomeFabricante() {
		return nomeFabricante;
	}
	public void setNomeFabricante(String nomeFabricante) {
		this.nomeFabricante = nomeFabricante;
	}
	public List<Produto> getListaProdutos() {
		return listaProdutos;
	}
	public void setListaProdutos(List<Produto> listaProdutos) {
		this.listaProdutos = listaProdutos;
	}

}
